class Punto {
  int puntuacionA;
  int puntuacionB;

  ArrayList<Trayectoria> trayectorias;
  ArrayList<Golpe> golpes;

  int jugadorQueSaca; 
 
  Punto() {
    golpes = new ArrayList<Golpe>();
    trayectorias = new ArrayList<Trayectoria>();
  }

  void addGolpeAPunto(Golpe g) {
    this.golpes.add(g);
    println ("added golpe:" + g);
  }

  void addTrayectoria(Trayectoria t) {
    trayectorias.add(t);
  }

  void cierraPunto() {
    // construye las trayectorias;
    trayectorias.clear();

    int index = 1;
    do {
      trayectorias.add (new Trayectoria (golpes.get(index-1), golpes.get(index)));
      index++;
    }
    while ( index < golpes.size ());
  }

  void pintaGolpesPunto(Boolean showFrame) {
    for (int i=0; i<golpes.size();i++) {
      Golpe g = golpes.get(i);
      g.pinta();
      if (showFrame)
        text (g.frame, g.pos.x + 10, g.pos.z);
    }
    if (golpes.size()>1) {
      for (int i=1; i<golpes.size();i++) {
        Golpe g0 = golpes.get(i-1);
        Golpe g  = golpes.get(i);
        line(g0.pos.x, g0.pos.z, g.pos.x, g.pos.z);
      }
    }
  }

  String toString () {
    String str = "PUNTO:\n";
    for (int i =0; i< golpes.size(); i++) {
      str += (golpes.get(i));
      str += "\n";
    }

    for (int i =0; i< trayectorias.size(); i++) {
      str += (trayectorias.get(i));
      str += "\n";
    }
    return str;
  }
  void borraTrayectorias() {
    trayectorias.clear();
  }

  void updateJugador() {
    //recorre todos los golpes en el punto, y basandose en el saque (jugadorQueSaca) actualiza el estado de todo el punto.
    int ultimoJugador = golpes.get(0).jugador;                                        //tomamos el jugador que ha sacadao.
    
    for (int i = 0; i< trayectorias.size(); i++){
      Trayectoria tr = trayectorias.get(i);
      tr.inicio.jugador = ultimoJugador;
      if (tr.fin.tipo == 2){ // es raqueta
        ultimoJugador = (ultimoJugador+1)%2;
      }
    }
    
//    this.jugadorQueSaca=ultimoJugador;                                                //actualizamos el saque en el punto 
//    for (int i =0; i< golpes.size(); i++) {                                           //reconstruimos la secuencia.
//      if (golpes.get(i).tipo==2) {
//        ultimoJugador=(ultimoJugador+1)%2;
//        golpes.get(i).jugador=(ultimoJugador);
//      }
//    }
  }
}

